'''
问题描述：你有一架天平和 N 个砝码，这 N 个砝码重量依次是 W1, W2, · · · WN
请你计算一共可以称出多少种不同的重量？
注意砝码可以放在天平两边
输入的第一行包含一个整数 N
第二行包含 N 个整数：W1, W2, W3, · · ·  WN输出一个整数代表答案
输出一个整数代表答案
样例输入
3
1 4 6
样例输出
10
'''
'''
n=int(input())
a=list(map(int,input().split()))
sum=0
for i in a:
    sum+=i
dp=[[0]*2*sum for i in range(n+1)]
result=0
for p in range(1,n+1):
    for q in range(1,sum+1):
        dp[p][q]=dp[p-1][q]
        if dp[p][q] == 0:
            if a[p-1]==q:
                    dp[p][q]=1
            if dp[p-1][a[p-1]+q]:
                    dp[p][q]=1
                    print(p,q)
            if dp[p-1][abs(a[p-1]-q)]:
                    dp[p][q]=1
for i in dp[n]:
    if i==1:
        result+=1
print(result)
'''

'''
n = int(input())
weights = list(map(int, input().split()))

unique_weights = set()  # 用集合存储不同的重量

def dfs(left, right, i):
    if i == n:
        diff = abs(left - right)
        unique_weights.add(diff)
        return

    dfs(left + weights[i], right, i + 1)  # 将第i个砝码放在左边
    dfs(left, right + weights[i], i + 1)  # 将第i个砝码放在右边
    dfs(left, right, i + 1)  # 不放第i个砝码


dfs(0, 0, 0)  # 从第一个砝码开始，初始时天平左右两边的重量都为0
print(len(unique_weights))  # 输出不同的重量的数量
'''

n = int(input())
# dp[i][j]表示加上第i个砝码，j的重量是否可以被称出，可以被称出则j=1，不可以则j=0
a = list(map(int, input().split()))
sum = 0  # sum是j的范围
for i in a:
    sum += i
dp = [[0] * 2 * sum for i in range(n + 1)]  # *列   for in 行
result = 0
for p in range(1, n + 1):
    for q in range(1, sum + 1):
        dp[p][q] = dp[p - 1][q]
        if dp[p][q] == 0:  # 只看前p-1个无法称量的
            if a[p - 1] == q:
                dp[p][q] = 1
            if dp[p - 1][a[p - 1] + q]:  # 放在不同侧（即相减）  返过去判断就要相加
                dp[p][q] = 1
            if dp[p - 1][abs(a[p - 1] - q)]:
                dp[p][q] = 1
for i in dp[n]:
    if i == 1:
        result += 1
print(result)
